package com.etime.shycourse.services.wxcoupon.interfaces;

import com.etime.shycourse.dto.ActivityAndCouponlist;
import com.etime.shycourse.pojo.ActiveLog;
import com.etime.shycourse.pojo.Couponactivity;

import java.util.List;
import java.util.Map;

/**
 * 微信端与活动相关的服务层接口
 */
public interface WXActivityService {
    /**
     * 获取所有可用的通过分发方式触发的活动列表
     *
     * @return
     */
    List<Couponactivity> getShareActivityList();

    /**
     * 根据优惠券发放方式id查询所有可用的活动列表
     *
     * @return
     */
    List<Couponactivity> getUsedActivityListByTypeId(Integer activitytypeid);

    /**
     * 根据用户id查询所有该用户还没有领取优惠券的活动
     * @param userid
     * @return
     */
    List<Couponactivity> getActivityListByUserId(Integer userid);

    /**
     * 根据活动id获取一条活动的详细信息,包含活动的优惠券列表
     * @param activityid 活动id
     * @return
     */
    ActivityAndCouponlist getActivityAndCouponListById(Integer activityid);

    /**
     * 根据活动id和用户id查询一条活动的详细信息。包含活动的优惠券列表，但是有标记优惠券用户是否已经领取
     * @param activityid 活动id
     * @param userid 用户id
     * @return
     */
    ActivityAndCouponlist getActivityAndCouponListByIdAndUserid(Integer activityid,Integer userid);

    /**
     * 根据活动id查询一条活动的详细信息
     * @param activityid 活动id
     * @return
     */
    Couponactivity getActivityById(Integer activityid);

    /**
     * 添加活动参与记录
     * @param activeLog
     * @return
     */
    int insertActiveLog(ActiveLog activeLog);

    /**
     * 修改活动参与记录
     * @param activeLog
     * @return
     */
    int updateActiveLog(ActiveLog activeLog);

    /**
     * 通过用户id和活动id查询用户是否有参与指定的活动
     * @param userid
     * @param activeid
     * @return
     */
    List<ActiveLog> selectActiveLogByUserIdAdnActiveId(Integer userid,Integer activeid);

    /**
     * 判断分享活动是否有效
     * @param activeid 活动id
     * @param pwd 活动参与密码
     * @return
     */
    ActiveLog checkActiveUrlUsed(Integer activeid,String pwd);

    /**
     * 领取优惠券数据接口
     * @param activityAndCouponlist
     * @param pwd
     * @param userid 领取人id
     * @return
     */
    Map<String,String> drawCoupon(ActivityAndCouponlist activityAndCouponlist, Integer userid, String username, String pwd);
}
